package net.qiqbframework.commandhandling;

public interface CommandResult<T> {

    /**
     * 在命令执行过程中，如果获取由命令产生的一些结果，可T 类型的对象接受，并由其他地方使用。
     * 例如常见的创建命令，可能需要聚合根id。
     * <p>
     * ⚠️:有时可能外部需要的信息比较多，一劳永逸的做法是将可访问所有信息的聚合根返出去。
     * 强烈不建议这样使用，应该需要什么返回什么，这样能保证最小信息的暴露。
     * </p>
     *
     * @return
     */
    default T result() {
        throw new UnsupportedOperationException("Obtaining command results requires self implementation");
    }

}
